﻿/**
 *
 * @file    RemoveCompound.h
 * @brief   RemoveCompound Python接口封装
 * @author  fulipeng (fulipengqd@yeah.net)
 * @date    2024-10-25
 *
 */

#ifndef  __PYINTERFACE_PRIMITIVESREMOVECOMPOUND_H___
#define  __PYINTERFACE_PRIMITIVESREMOVECOMPOUND_H___

#include <QString>
#include <QObject>
#include <QVariantMap>
#include "WrapperDataObject.h"
#include "WrapperTools.h"
#include "PythonInterfaceAPI.h"

namespace Interface
{
    class FITKAbsGeoCommand;
    class FITKGeoCommandList;
    class FITKAbsGeoModelOperCompound;
}

/**
 * @brief   RemoveCompound数据封装类
 * @author  fulipeng (fulipengqd@yeah.net)
 * @date    2024-10-23
 */
class RemoveCompound : public WrapperDataObject
{
public:
    explicit RemoveCompound(int id = 0);
    explicit RemoveCompound(Interface::FITKAbsGeoModelOperCompound* RemoveCompound);
    virtual ~RemoveCompound() = default;

    /**
     * @brief   获取类名
     * @author  fulipeng (fulipengqd@yeah.net)
     * @date    2024-10-24
     */
    virtual const QString getClassName() override;

    /**
     * @brief   设置输入命令ID
     * @param   name
     * @return  status
     * @author  fulipeng (fulipengqd@yeah.net)
     * @date    2024-10-24
     */
    bool setInputCmdId(int cmdId);

    /**
     * @brief   设置添加的形状索引
     * @param   cmdIdIndex 索引
     * @return  status
     * @author  fulipeng (fulipengqd@yeah.net)
     * @date    2024-10-24
     */
    bool setShapeCmdIndex(int cmdIdIndex);

private:
    /**
     * @brief   装饰数据对象
     * @author  fulipeng (fulipengqd@yeah.net)
     * @date    2024-10-23
     */
    Interface::FITKAbsGeoModelOperCompound* m_RemoveCompound{};
};

/**
 * @brief   RemoveCompound数据装饰器类
 * @author  fulipeng (fulipengqd@yeah.net)
 * @date    2024-10-23
 */
class PythonInterfaceAPI RemoveCompoundWrapper : public WrapperDataObjectWrapper
{
    Q_OBJECT
public:
    explicit RemoveCompoundWrapper() = default;
    virtual ~RemoveCompoundWrapper() = default;

public slots:

    /**
     * @brief   新建装饰数据对象
     * @author  fulipeng (fulipengqd@yeah.net)
     * @date    2024-10-24
     */
    RemoveCompound* new_RemoveCompound();

    /**
     * @brief   销毁装饰数据对象
     * @author  fulipeng (fulipengqd@yeah.net)
     * @date    2024-10-24
     */
    void delete_RemoveCompound(RemoveCompound* obj);

    /**
     * @brief   设置输入命令名称
     * @param   obj
     * @param   name 名称
     * @author  fulipeng (fulipengqd@yeah.net)
     * @date    2024-10-25
     */
    void setInputCmdName(RemoveCompound* obj, const QString& name);

    /**
     * @brief   设置移除索引
     * @param   obj
     * @param   name 名称
     * @author  fulipeng (fulipengqd@yeah.net)
     * @date    2024-10-24
     */
    void setRemoveIndex(RemoveCompound* obj, int index);

    /**
     * @brief   更新数据
     * @param   obj
     * @param   p1[3] xyz
     * @param   p2[3] xyz
     * @author  fulipeng (fulipengqd@yeah.net)
     * @date    2024-10-24
     */
    void update(RemoveCompound* obj);

    /**
     * @brief   创建RemoveCompound
     * @return  RemoveCompound
     * @author  fulipeng (fulipengqd@yeah.net)
     * @date    2024-10-24
     */
    RemoveCompound* static_RemoveCompound_Create();

private:

};


#endif
